/*
    Quaxx - Just another ataxx clone
    Copyright (C) 2010  Manuel Córdoba Ruiz

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class QAction;
class QLabel;
class Tablero;
class OpcionesDialog;

class MainWindow : public QMainWindow{
	Q_OBJECT
	public:
		/**
		@brief Constructor. Crea una ventana principal
		**/
		MainWindow();

	private slots:

		/**
		@brief Nueva partida. Muestra un dialogo preguntando si esta seguro y llama al metodo nuevo del tablero.
		**/
		void nuevo();
		/**
		@brief Abrir una partida. Muestra el dialogo para seleccionar un archivo y llama al metodo abrir del tablero.
		**/
		void abrir();

		/**
		@brief Guardar una partida. Muestra el dialogo para elegir un nombre y ubicacion de archivo y llama al metodo guardar del tablero.
		**/
		void guardar();

		/**
		@brief Configurar opciones. Muestra la ventana de opciones estableciendo en los selects los valores adecuados.
		**/
		void opciones();

		/**
		@brief Acerca de... Muestra informacion relativa al programa.
		**/
		void about();

	public slots:

		/**
		@brief Dialogo ha ganado
		**/
		void ganar(QString mensaje);

	private:
		/**
		@brief Crea las acciones de los menus
		**/
		void createActions();

		/**
		@brief Crea los menus
		**/
		void createMenus();

		/**
		@brief Crea la barra de estado
		**/
		void createStatusBar();
		

		Tablero *tablero;
		OpcionesDialog *opcionesDialog;

		// Menus
		QMenu *menu_Juego;
		QMenu *menu_Movimientos;
		QMenu *menu_Ayuda;
	
	
		// Opciones del menu Juego
		QAction *action_Nuevo;
		QAction *action_Abrir;  
		QAction *action_Guardar;
		QAction *action_Opciones;
		QAction *action_Salir;

		// Opciones del menu Movimientos
		QAction *action_Anterior;
  		QAction *action_Siguiente;


		// Opciones del menu Ayuda
		QAction *action_AcercaDe;

};

#endif
